Angewandte Datenverarbeitung und Visualisierung (WiSe23/24)
  • D. Palleschi
  • Download PDF
  • Download ePub
  1. Course mats
  2. 1  Einführung in R und RStudio
  • Overview
    • Course Overview
    • Syllabus
    • Kursübersicht
    • Erforderliche Software
  • Course mats
    • 1  Einführung in R und RStudio
  • Reports
    • Bericht 1
    • Bericht 2
    • Bericht 3
  • References

heutige Themen

  • Heutige Ziele
  • 1.1 R in RStudio
    • 1.1.1 Erweitungspakete
    • 1.1.2 Laden eines Pakets
    • 1.1.3 Aufgabe
  • 1.2 Reproduzierbarkeit
    • 1.2.1 RStudio-Einstellungen
    • 1.2.2 R-Projekte
    • 1.2.3 Aufgabe
  • 1.3 Rechnen in R
  • 1.4 Endergebnis
  • 1.5 Session Info
    • Session Info

1  Einführung in R und RStudio

Autor:in
Zugehörigkeit

Daniela Palleschi

Humboldt-Universität zu Berlin

Veröffentlichungsdatum

13. Oktober 2023

Heutige Ziele

  • R und RStudio installieren
  • in der Lage sein, Zusatzpakete zu installieren
  • in der Lage sein, Hilfe für Pakete und Funktionen zu erhalten
  • in der Lage sein, Objekte in der Konsole zu erstellen

1.1 R in RStudio

  1. Öffnen Sie RStudio
  2. klicken Sie auf File > New File > R Script
  • sehen Sie nun vier Quadrate:
    • Texteditor - oben Links
      • wo wir unseren Code schreiben werden
    • R-Konsole (EN: Console) - unten links
      • wo wir die Ausgabe unseres Codes und Warn-/Fehlermeldungen sehen werden
    • Arbeitsumgebung (EN: Environment) - oben rechts
      • wo unsere Daten und Objekte nach dem Laden gespeichert werden
    • Dateien und Grafikausgabe - unten links
      • wo wir unsere Dateien und die von uns erstellten Grafiken sehen oder Hilfe bekommen können

1.1.1 Erweitungspakete

  • R hat eine Reihe von nativen Funktionen und Datensätzen, auf die wir zugreifen können
    • ähnlich wie die Standard-Apps, die auf Ihrem Handy vorinstalliert sind
  • Jeder kann Zusatzpakete für R erstellen, z.B.,
    • für Datenvisualisierung
    • Datenverarbeitung
  • Dies ist ähnlich wie bei Handy-Apps, die von jedem erstellt und auf Ihr Gerät heruntergeladen werden können
    • aber Pakete sind immer kostenlos
  • Es gibt 2 Schritte, um ein Paket zu verwenden:
    1. Installieren des Pakets (einmalig)
    2. Laden Sie das Paket (zu Beginn jeder Sitzung)

Paket-Installation

  • erfolgt mit der Funktion install.packages()
    • Sie machen dies nur einmal (wie das Herunterladen einer App)
  • das Paket tidyverse ist sehr hilfreich für Datenverarbeitung und Visualisierung
    • Installieren wir es jetzt

Paket-Installation

  • installieren Sie die Pakete tidyverse und beepr
install.packages("tidyverse")
install.packages("beepr")
Pakete in der Konsole installieren

Installieren Sie Pakete immer über die Konsole, nicht über ein Skript!

Sie können auch die Registerkarte “Pakete” in der unteren rechten Box verwenden (Pakete > Installieren)

tinytex

  • wir brauchen auch LaTeX und tinytex (Xie, 2023), um PDF-Dokumente zu erstellen
  • führen Sie diesen Code aus, um tinytex zu installieren
## run this in the console
install.packages("tinytex")
tinytex::install_tinytex()
  • Sie müssen auch LaTeX installieren, wenn Sie es noch nicht haben: https://www.latex-project.org/get/

1.1.2 Laden eines Pakets

  • der Befehl library() lädt ein Paket in Ihre Umgebung
  • dies muss zu Beginn jeder Sitzung geschehen, um auf das entsprechende Paket zugreifen zu können
library(beepr)

Verwendung einer Funktion

  • Sobald Sie ein Paket geladen haben, können Sie auf dessen Funktionen zugreifen
  • Zum Beispiel hat das Paket beepr eine Funktion beep(), probieren wir sie aus
in der Konsole laufen
beep()

Funktionsargumente

  • Argumente enthalten optionale Informationen, die an eine Funktion übergeben werden
    • Die Funktion beep() hat das Argument sound, das einen numerischen Wert von 1:11 annimmt.
    • Versuchen Sie, den folgenden Code mit anderen Zahlen auszuführen, was passiert?
in der Konsole laufen
beep(sound = 5)

Funktionsargumente

?help

Sie können mehr über eine Funktion (einschließlich ihrer verfügbaren Argumente) herausfinden, indem Sie ihren Namen nach einem Fragezeichen in die Konsole schreiben (z.B. ?beep). Versuchen Sie, ?beep auszuführen. Kannst du auf der Hilfeseite herausfinden, was du anstelle von sound = 5 schreiben kannst, um denselben Ton zu erzeugen?

1.1.3 Aufgabe

Aufgabe

Wir brauchen auch das here-Package. Installieren Sie dieses.

Nachdem Sie das Paket installiert haben, führen Sie den Befehl here() aus. Was geschieht?

1.2 Reproduzierbarkeit

  • in diesem Kurs werden wir lernen, wie man reproduzierbare Berichte erstellt
    • Das bedeutet, dass unser Code später noch einmal ausgeführt werden kann und immer noch die gleichen Ergebnisse liefert
  • wenn Ihre Arbeit reproduzierbar ist, können andere Leute (und Sie selbst) Ihre Arbeit verstehen und überprüfen
    • Für Kursaufgaben werden Sie Berichte sowie den Quellcode einreichen, die ich auf meinem Rechner ausführen können sollte

1.2.1 RStudio-Einstellungen

  • wir wollen immer mit einem freien Arbeitsbereich in RStudio beginnen, um die Reproduzierbarkeit zu gewährleisten
    • Wir wollen auch niemals unseren Arbeitsbereich für später speichern
    • wir wollen nur unseren Code (und die Ausgabeberichte) speichern
  • Gehen Sie zu Tools > Global Options
    • Deaktivieren Sie das Kontrollkästchen Restore .RData into workspace at startup
    • Setzen Sie Save workspace to .RData on exit: to Never

RStudio-Einstellungen

RStudio: Tools > Global Options:

  • Restore .RData into workspace at startup
    • nein
  • Save workspace to .RData on exit:
    • Never

Ihre ‘Global Options’ sollten wie folgt aussehen

RStudio-Einstellungen

  • Klicken Sie auf Appearance (linke Spalte)
    • Öffnen Sie die Optionen “Editor Theme” und wählen Sie ein Farbschema, das Ihnen gefällt
    • Sie können auch die Schriftart/Schriftgröße ändern, wenn Sie dies wünschen

1.2.2 R-Projekte

  • Bevor wir fortfahren, müssen Sie ein R-Projekt für diesen Kurs einrichten:
    • in RStudio: File > New Project > New Directory > New Project > Create Project
    • Benennen Sie das Projekt für diesen Kurs
  • Tipp

    Navigieren Sie im Dateimanager Ihres Computers zum Projektordner: Klicken Sie auf die Datei .RProj

    • Dadurch wird RStudio geöffnet
    • Erstellen Sie einen neuen Ordner mit dem Namen daten
    • Erstellen Sie einen neuen Ordner, in dem Sie Ihre Kursnotizen/Übungen speichern werden (nennen Sie ihn, wie Sie wollen)

Projektordnerstruktur

Neue Ordner (EN: New Folder)

  • daten (genau so genannt)

  • notizen (oder wie immer Sie es nennen wollen)

  • Erstellen Sie im Ordner ‘notizen’ einen weiteren Ordner mit dem Namen ‘01-rstudio’.

    • Dies ist der Ordner, der das heutige Skript enthält.

Ihre ‘Files’ (unten rechts) sollten so aussehen

1.2.3 Aufgabe

  • in RStudio: File > New File > R Script
    • wenn sich oben links ein neues Fenster öffnet: “Datei > Speichern unter…”.
      • speichern Sie es in Ihrem 01-rstudio-Ordner
    • schreiben Sie oben in das Skript: ## Angewandte Datenverarbeitung und Visualisierung - Woche 1 (17.04.2023)

Ihre Skript (oben links) sollten so aussehen

1.3 Rechnen in R

  • können wir Berechnungen in R durchführen
  • wir können addieren (+), subtrahieren (-), multiplizieren (*) und dividieren (/)

Rechnen in R

Aufgabe
  1. Versuchen Sie, die folgenden Berechnungen in der Konsole auszuführen:
## Addition
16+32
[1] 48
## Multiplikation
16*32
[1] 512
## Subtraktion
16-32
[1] -16
## Division
16/32
[1] 0.5
  1. schreiben Sie diese Berechnungen in Ihr Skript, und drücken Sie Cmd/Strg-Enter, um sie auszuführen
  • Was passiert?

1.3.1 Objekte

  • wir können auch Werte als Objekte/Variablen speichern, die in der Arbeitsumgebung gespeichert sind
x <- 16
y <- 32
Assignment operator

Das Symbol <- ist ein sogenannter assignment operator. Es erstellt ein neues Objekt in Ihrer Arbeitsumgebung oder überschreibt ein vorhandenes Objekt mit demselben Namen. Es ist wie ein Pfeil, der sagt: “Nimm das, was rechts steht, und speichere es als den Objektnamen auf der linken Seite”.

1.3.2 Rechnen mit Funktionen

  • es gibt auch eingebaute Funktionen für komplexere Berechnungen
  • z.B., mean() (DE: Durchschnitt), sum() (DE: Summe)
  • was passiert, wenn wir folgendes ausführen?
sum(6,10)
[1] 16
6+10
[1] 16
mean(6,10)
[1] 6
(6+10)/2
[1] 8

Rechnen mit Funktionen

  • die Funktion mean() nimmt nur ein Argument an; alles andere wird ignoriert
    • das Komma in 6,10 listet 2 Argumente auf, also wird alles nach dem Komma ignoriert
  • wenn wir mehr als ein Objekt in ein Argument einschließen wollen, müssen wir die “concatenate”-Funktion c() verwenden
    • “concatenate” bedeutet zusammenfügen oder kombinieren
mean(c(6,10))
[1] 8

Rechnen mit Funktionen

  • Sie können auch benannte Objekte (d.h. die in Ihrer Arbeitsumgebung) verwenden, die einen numerischen Wert haben
Aufgabe
  1. Versuchen Sie, die Funktion mean() mit Ihren gespeicherten Variablen (x und y) als “verkettete” Argumente auszuführen
  2. Machen Sie dasselbe mit der Funktion sum(). Was passiert, wenn Sie c() nicht verwenden?

1.4 Endergebnis

  • Speichern Sie Ihr R-Skript (File > Save, oder Cmd/Strg-S)

  • Sie sollten nun einen RProject-Ordner für diesen Kurs, der Folgendes enthält:

    • Kurs_name.RProj
    • einen Ordner namens Daten
    • einen Ordner namens notes, der Folgendes enthält
      • einen Ordner namens 01-rstudio, der Folgendes enthält
        • eine .R-Datei mit der heutigen Arbeit
  • Sie wissen jetzt, wie man

    • einfache Berechnungen in R durchführen
    • Objekte in Ihrer Arbeitsumgebung zu speichern
    • einfache mathematische Berechnungen mit Ihren gespeicherten Objekten durchführen

1.5 Session Info

  • Um die Reproduzierbarkeit zu verbessern, ist es nützlich, die Version von R, RStudio und die verwendeten Pakete zu verfolgen
    • Zu diesem Zweck können Sie die folgenden Befehle ausführen:
## R version
R.version.string
[1] "R version 4.3.0 (2023-04-21)"
## R version name
R.version$nickname
[1] "Already Tomorrow"
## RStudio version
RStudio.Version()$version
## RStudio version name
RStudio.Version()$release_name
## alle Paketeversionen
sessionInfo()

Session Info

Hergestellt mit R version 4.3.0 (2023-04-21) (Already Tomorrow) und RStudioversion 2023.3.0.386 (Cherry Blosson).

sessionInfo()
R version 4.3.0 (2023-04-21)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Ventura 13.2.1

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

time zone: Europe/Berlin
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] magick_2.7.4 beepr_1.3   

loaded via a namespace (and not attached):
 [1] digest_0.6.33     fastmap_1.1.1     xfun_0.39         magrittr_2.0.3   
 [5] glue_1.6.2        stringr_1.5.0     audio_0.1-10      knitr_1.43       
 [9] htmltools_0.5.5   png_0.1-8         rmarkdown_2.22    lifecycle_1.0.3  
[13] cli_3.6.1         compiler_4.3.0    rprojroot_2.0.3   here_1.0.1       
[17] rstudioapi_0.14   tools_4.3.0       evaluate_0.21     Rcpp_1.0.11      
[21] yaml_2.3.7        rlang_1.1.1       jsonlite_1.8.7    htmlwidgets_1.6.2
[25] stringi_1.7.12   

Literaturverzeichnis

Erforderliche Software
Bericht 1
Quellcode
---
title: "Einführung in R und RStudio"
## subtitle: ""
author: "Daniela Palleschi"
institute: Humboldt-Universität zu Berlin
footer: "Woche 1 - R und RStudio"
lang: de
date: "`r Sys.Date()`"
format:
  html:
    output-file: rstudio_blatt.html
    number-sections: true
    number-depth: 3
    toc: true
    toc-title: "heutige Themen"
    code-overflow: wrap
    code-tools: true
    self-contained: true
  revealjs: 
    output-file: rstudio_folien.html
    theme: [dark]
    width: 1600
    height: 900
    progress: true
    ## smaller: true
    scrollable: true
    slide-number: c/t
    code-link: true
    code-overflow: wrap
    code-tools: true
    ## logo: logos/hu_logo.png
    ## css: logo.css
    incremental: true
    ## number-sections: true
    toc: true
    toc-depth: 1
    toc-title: 'Überblick'
    number-sections: true
    number-depth: 1
    navigation-mode: linear
    controls-layout: bottom-right
    fig-cap-location: top
    font-size: 0.6em
    slide-level: 4
    self-contained: true
    ## chalkboard: true
    title-slide-attributes: 
      data-background-image: logos/logos.tif
      data-background-size: 15%
      data-background-position: 50% 92%
  pdf:
    output-file: rstudio.pdf
    toc: true
    number-sections: true
    colorlinks: true
    code-overflow: wrap
bibliography: references/references.bib
csl: references/apa.csl
---

```{r}
#| echo: false
knitr::opts_chunk$set(eval = T, ## evaluate chunks
                      echo = T, ## 'print code chunk?'
                      message = F, ## 'print messages (e.g., warnings)?'
                      error = F, ## stop when error encountered
                      warning = F) ## don't print warnings
```

## Heutige Ziele {-}

-   R und RStudio installieren
-   in der Lage sein, Zusatzpakete zu installieren
-   in der Lage sein, Hilfe für Pakete und Funktionen zu erhalten
-   in der Lage sein, Objekte in der Konsole zu erstellen

## R in RStudio

1.  Öffnen Sie RStudio
2.  klicken Sie auf `File > New File > R Script`

-   sehen Sie nun vier Quadrate:
    -   Texteditor - oben Links
        -   wo wir unseren Code schreiben werden
    -   R-Konsole (EN: Console) - unten links
        -   wo wir die Ausgabe unseres Codes und Warn-/Fehlermeldungen sehen werden
    -   Arbeitsumgebung (EN: Environment) - oben rechts
        -   wo unsere Daten und Objekte nach dem Laden gespeichert werden
    -   Dateien und Grafikausgabe - unten links
        -   wo wir unsere Dateien und die von uns erstellten Grafiken sehen oder Hilfe bekommen können

### Erweitungspakete

-   R hat eine Reihe von nativen Funktionen und Datensätzen, auf die wir zugreifen können
    -   ähnlich wie die Standard-Apps, die auf Ihrem Handy vorinstalliert sind
-   Jeder kann Zusatzpakete für R erstellen, z.B.,
    -   für Datenvisualisierung
    -   Datenverarbeitung
-   Dies ist ähnlich wie bei Handy-Apps, die von jedem erstellt und auf Ihr Gerät heruntergeladen werden können
    -   aber Pakete sind *immer kostenlos*
-   Es gibt 2 Schritte, um ein Paket zu verwenden:
    1.  Installieren des Pakets (einmalig)
    2.  Laden Sie das Paket (zu Beginn jeder Sitzung)

#### Paket-Installation

-   erfolgt mit der Funktion `install.packages()`
    -   Sie machen dies nur einmal (wie das Herunterladen einer App)
-   das Paket `tidyverse` ist sehr hilfreich für Datenverarbeitung und Visualisierung
    -   Installieren wir es jetzt

#### Paket-Installation {.unlisted .unnumbered}

-   installieren Sie die Pakete `tidyverse` und `beepr`

```{r}
#| eval: false
install.packages("tidyverse")
install.packages("beepr")
```

::: callout-important
### Pakete in der Konsole installieren

Installieren Sie Pakete immer über die Konsole, nicht über ein Skript!

Sie können auch die Registerkarte "Pakete" in der unteren rechten Box verwenden (Pakete \> Installieren)
:::

#### `tinytex`

-   wir brauchen auch LaTeX und `tinytex` [@xie_tinytex_2023], um PDF-Dokumente zu erstellen
-   führen Sie diesen Code aus, um `tinytex` zu installieren

```{r}
#| eval: false
## run this in the console
install.packages("tinytex")
tinytex::install_tinytex()
```

-   Sie müssen auch LaTeX installieren, wenn Sie es noch nicht haben: <https://www.latex-project.org/get/>

### Laden eines Pakets

- der Befehl `library()` lädt ein Paket in Ihre Umgebung
- dies muss zu Beginn jeder Sitzung geschehen, um auf das entsprechende Paket zugreifen zu können

```{r}
library(beepr)
```

#### Verwendung einer Funktion

- Sobald Sie ein Paket geladen haben, können Sie auf dessen Funktionen zugreifen
- Zum Beispiel hat das Paket `beepr` eine Funktion `beep()`, probieren wir sie aus

```{r, filename="in der Konsole laufen"}
beep()
```

#### Funktionsargumente

- Argumente enthalten optionale Informationen, die an eine Funktion übergeben werden
  + Die Funktion `beep()` hat das Argument `sound`, das einen numerischen Wert von 1:11 annimmt.
  + Versuchen Sie, den folgenden Code mit anderen Zahlen auszuführen, was passiert?

```{r, filename="in der Konsole laufen"}
beep(sound = 5)
```

#### Funktionsargumente {.unlisted .unnumbered}

::: callout-note
#### `?help`
Sie können mehr über eine Funktion (einschließlich ihrer verfügbaren Argumente) herausfinden, indem Sie ihren Namen nach einem Fragezeichen in die Konsole schreiben (z.B. `?beep`). Versuchen Sie, `?beep` auszuführen. Kannst du auf der Hilfeseite herausfinden, was du anstelle von `sound = 5` schreiben kannst, um denselben Ton zu erzeugen?
:::

### Aufgabe

::: callout-tip
### Aufgabe

Wir brauchen auch das `here`-Package. Installieren Sie dieses.

Nachdem Sie das Paket installiert haben, führen Sie den Befehl `here()` aus. Was geschieht?
:::

## Reproduzierbarkeit

-   in diesem Kurs werden wir lernen, wie man *reproduzierbare Berichte* erstellt
    -   Das bedeutet, dass unser Code später noch einmal ausgeführt werden kann und immer noch die gleichen Ergebnisse liefert
-   wenn Ihre Arbeit reproduzierbar ist, können andere Leute (und Sie selbst) Ihre Arbeit verstehen und überprüfen
    -   Für Kursaufgaben werden Sie Berichte sowie den Quellcode einreichen, die ich auf meinem Rechner ausführen können sollte

### RStudio-Einstellungen

-   wir wollen immer mit einem freien Arbeitsbereich in RStudio beginnen, um die Reproduzierbarkeit zu gewährleisten
    -   Wir wollen auch niemals unseren Arbeitsbereich für später speichern
    -   wir wollen nur unseren Code (und die Ausgabeberichte) speichern
-   Gehen Sie zu `Tools > Global Options`
    -   Deaktivieren Sie das Kontrollkästchen `Restore .RData into workspace at startup`
    -   Setzen Sie `Save workspace to .RData on exit:` to `Never`

### RStudio-Einstellungen {.unlisted .unnumbered}

:::: columns
::: {.column width="50%"}
`RStudio: Tools > Global Options`:

-   `Restore .RData into workspace at startup`
    -   nein
-   `Save workspace to .RData on exit:`
    -   `Never`

:::
::: {.content-visible when-format="revealjs"}
::: {.column width="50%"}
```{r eval = T, fig.env = "figure", out.width="100%", fig.align = "center", fig.pos="H", set.cap.width=T, fig.cap="Ihre 'Global Options' sollten wie folgt aussehen"}
#| echo: false

library(magick)
magick::image_read(here::here("media/RStudio_global-options.png"))
```
:::
:::

::: {.content-visible when-format="pdf"}
::: {.column width="50%"}
```{r eval = T, fig.env = "figure", out.width="100%", fig.align = "center", fig.pos="H", set.cap.width=T, fig.cap="Ihre 'Global Options' sollten wie folgt aussehen"}
#| echo: false

library(magick)
magick::image_read(here::here("media/RStudio_global-options.png"))
```
:::
:::
::::

::: {.content-hidden when-format="revealjs"}
::: {.content-hidden when-format="pdf"}
```{r eval = T, fig.env = "figure", out.width="75%", fig.align = "center", fig.pos="H", set.cap.width=T, fig.cap="Ihre 'Global Options' sollten wie folgt aussehen"}
#| echo: false

library(magick)
magick::image_read(here::here("media/RStudio_global-options.png"))
```
:::
:::

### RStudio-Einstellungen {.unlisted .unnumbered}

-   Klicken Sie auf `Appearance` (linke Spalte)
    -   Öffnen Sie die Optionen "Editor Theme" und wählen Sie ein Farbschema, das Ihnen gefällt
    -   Sie können auch die Schriftart/Schriftgröße ändern, wenn Sie dies wünschen

### R-Projekte

-   Bevor wir fortfahren, müssen Sie ein R-Projekt für diesen Kurs einrichten:
    -   in RStudio: `File > New Project > New Directory > New Project > Create Project`
    -   Benennen Sie das Projekt für diesen Kurs

-   ::: callout-tip
    Navigieren Sie im Dateimanager Ihres Computers zum Projektordner: Klicken Sie auf die Datei `.RProj`
    :::

    -   Dadurch wird RStudio geöffnet
    -   Erstellen Sie einen neuen Ordner mit dem Namen `daten`
    -   Erstellen Sie einen neuen Ordner, in dem Sie Ihre Kursnotizen/Übungen speichern werden (nennen Sie ihn, wie Sie wollen)

#### Projektordnerstruktur

::: {.column width="30%"}
Neue Ordner (EN: New Folder)

-   daten (genau so genannt)
-   notizen (oder wie immer Sie es nennen wollen)

- Erstellen Sie im Ordner 'notizen' einen weiteren Ordner mit dem Namen '01-rstudio'.
  + Dies ist der Ordner, der das heutige Skript enthält.
:::

::: {.content-hidden when-format="html"}
::: {.column width="70%"}
```{r eval = T, fig.env = "figure",out.height="100%", fig.pos = "H", fig.align = "center", set.cap.width=T, fig.cap="Ihre 'Files' (unten rechts) sollten so aussehen"}
#| echo: false

library(magick)
magick::image_read(here::here("media/RProj_folders.png"))
```
:::
:::

::: {.content-visible when-format="html"}
```{r eval = T, fig.env = "figure",out.width="100%", fig.pos="H", fig.align = "center", fig.cap="Ihre 'Files' (unten rechts) sollten so aussehen"}
#| echo: false

library(magick)
magick::image_read(here::here("media/RProj_folders.png"))
```
:::


### Aufgabe {.smaller}

::: {.column width="40%"}

- in RStudio: `File > New File > R Script`
  + wenn sich oben links ein neues Fenster öffnet: "Datei > Speichern unter...".
    + speichern Sie es in Ihrem 01-rstudio-Ordner
  + schreiben Sie oben in das Skript: `## Angewandte Datenverarbeitung und Visualisierung - Woche 1 (17.04.2023)`
  
:::

::: {.content-hidden when-format="html"}
::: {.column width="60%"}
```{r eval = T, fig.env = "figure",out.height="100%", fig.pos = "H", fig.align = "center", fig.cap="Ihre Skript (oben links) sollten so aussehen"}
#| echo: false

library(magick)
magick::image_read(here::here("media/Rscript_day1.png"))
```
:::
:::

::: {.content-visible when-format="html"}
```{r eval = T, fig.env = "figure",out.width="100%", fig.pos="H", fig.align = "center", fig.cap="Ihre Skript (oben links) sollten so aussehen"}
#| echo: false

library(magick)
magick::image_read(here::here("media/Rscript_day1.png"))
```
:::


## Rechnen in R

-   können wir Berechnungen in R durchführen
-   wir können addieren (`+`), subtrahieren (`-`), multiplizieren (`*`) und dividieren (`/`)

## Rechnen in R {.unlisted .unnumbered}

::: callout-tip
#### Aufgabe

1. Versuchen Sie, die folgenden Berechnungen in der Konsole auszuführen:

::: {.column width="50%"}
```{r}
#| output-location: column-fragment
#| code-line-numbers: false
## Addition
16+32
```

```{r}
#| output-location: column-fragment
#| code-line-numbers: false
## Multiplikation
16*32
```
:::

::: {.column width="50%"}
```{r}
#| output-location: column-fragment
#| code-line-numbers: false
## Subtraktion
16-32
```

```{r}
#| output-location: column-fragment
#| code-line-numbers: false
## Division
16/32
```


2. schreiben Sie diese Berechnungen in Ihr Skript, und drücken Sie `Cmd/Strg-Enter`, um sie auszuführen
  + Was passiert?
:::
:::


### Objekte

- wir können auch Werte als Objekte/Variablen speichern, die in der Arbeitsumgebung gespeichert sind

```{r}
x <- 16
y <- 32
```

::: callout-note
### Assignment operator

Das Symbol `<-` ist ein sogenannter *assignment operator*. Es erstellt ein neues Objekt in Ihrer Arbeitsumgebung oder überschreibt ein vorhandenes Objekt mit demselben Namen. Es ist wie ein Pfeil, der sagt: "Nimm das, was rechts steht, und speichere es als den Objektnamen auf der linken Seite".
:::

### Rechnen mit Funktionen

-   es gibt auch eingebaute Funktionen für komplexere Berechnungen
  + z.B., `mean()` (DE: Durchschnitt), `sum()` (DE: Summe)
- was passiert, wenn wir folgendes ausführen?

```{r}
#| output-location: column-fragment
sum(6,10)
```

```{r}
#| output-location: column-fragment
6+10
```

```{r}
#| output-location: column-fragment
mean(6,10)
```

```{r}
#| output-location: column-fragment
(6+10)/2
```

### Rechnen mit Funktionen {.unlisted .unnumbered}

- die Funktion `mean()` nimmt nur ein Argument an; alles andere wird ignoriert
  + das Komma in `6,10` listet 2 Argumente auf, also wird alles nach dem Komma ignoriert
- wenn wir mehr als ein Objekt in ein Argument einschließen wollen, müssen wir die "concatenate"-Funktion `c()` verwenden
  + "concatenate" bedeutet zusammenfügen oder kombinieren

```{r}
#| output-location: column-fragment
mean(c(6,10))
```

### Rechnen mit Funktionen {.unlisted .unnumbered}

- Sie können auch benannte Objekte (d.h. die in Ihrer Arbeitsumgebung) verwenden, die einen numerischen Wert haben

::: callout-tip
### Aufgabe

1. Versuchen Sie, die Funktion `mean()` mit Ihren gespeicherten Variablen (`x` und `y`) als "verkettete" Argumente auszuführen
2. Machen Sie dasselbe mit der Funktion `sum()`. Was passiert, wenn Sie `c()` nicht verwenden?
:::

## Endergebnis

- Speichern Sie Ihr R-Skript (`File > Save`, oder `Cmd/Strg-S`)

- Sie sollten nun einen *RProject-Ordner* für diesen Kurs, der Folgendes enthält:
  + `Kurs_name.RProj`
  + einen Ordner namens `Daten`
  + einen Ordner namens `notes`, der Folgendes enthält
      + einen Ordner namens `01-rstudio`, der Folgendes enthält
        + eine `.R`-Datei mit der heutigen Arbeit
- Sie wissen jetzt, wie man
  + *einfache Berechnungen* in R durchführen
  + *Objekte* in Ihrer Arbeitsumgebung zu speichern
  + einfache mathematische Berechnungen mit Ihren gespeicherten Objekten durchführen

## Session Info

- Um die Reproduzierbarkeit zu verbessern, ist es nützlich, die Version von R, RStudio und die verwendeten Pakete zu verfolgen
  + Zu diesem Zweck können Sie die folgenden Befehle ausführen:

```{r}
## R version
R.version.string
## R version name
R.version$nickname
```

```{r}
#| eval: false
## RStudio version
RStudio.Version()$version
## RStudio version name
RStudio.Version()$release_name
```

```{r}
#| eval: false
## alle Paketeversionen
sessionInfo()
```


```{r}
#| eval: false
#| echo: false
## N.B., RStudio.Version can also be called using
rstudioapi::versionInfo()
## but neither will run during a knit/render; so manually run and update inline text
```


### Session Info {-}

```{r}
#| eval: false
#| echo: false
## RStudio version
RStudio.Version()$version
## RStudio version name
RStudio.Version()$release_name
```

Hergestellt mit `r R.version.string` (`r R.version$nickname`) und RStudioversion 2023.3.0.386 (Cherry Blosson).

```{r}
sessionInfo()
```

## Literaturverzeichnis {.unlisted .unnumbered visibility="uncounted"}

::: {#refs custom-style="Bibliography"}
:::